将多行数据聚集成单行, 优先支持分组
别名@summarise
使用@summarize
后不自动向量化
使用@summarize
后移除一层分组
过滤行
只保留计算结果为true
的行
跳过计算结果为missing
的行
支持&&
, &
和多表达式三种表示and
的语法表示
按指定列去重;
会返回所有列(与R中的不同, R里是只返回去重的列);
优先考虑分组(把分组列当成去重列, 显式地传入, 应该是一样的效果吧?);
用于在@mutate()
和@summarize()
中操作多列或多个操作函数的辅助函数;
语法across(列选择元组, 函数元组)
;
列选择元组可以是对列名的辅助函数操作集合, 如(starts_with("Bud"), ends_with("ting"))
函数元组支持融合函数: ∘
, 如mean(skipmissing())
可以写作mean∘skipmissing
函数元组支持匿名函数, 但目前版本中匿名函数内部不能写融合函数, 将在以后更新中修复该bug
Tidier提供的两个条件处理函数。
需要评估多个条件时, if_else()就不太够用了, 这时用case_when()
比较方便:
@bind_rows(dfs..., [id])
和@bind_cols(dfs...)
进行多个表格的行列拼接:
长宽表转换
@pivot_wider(df, names_from = <xxx/"xxx">, values_from = <yyy/"yyy">)
@pivot_longer(df, <要透视的列名>), [names_to = <xxx/"xxx">, values_to = <yyy/"yyy">])
列名默认是Tidy 语法
: 列名的bareword;
如果列名有空格, 则可以用var
字符串宏: var"col name"
或者可以用反引号
用@clean_names(case = "camelCase")
清理带空格的名字,默认是"snake_case"
使用!!
将全局变量插入到代码中
由于必须是全局变量, 所以在写代码时, 建议用@eval
宏: @eval(Main, myvar = :b)
在交互REPL中, 则直接赋值即可
变量可以是单个字符或Symbol, 也可以是元组或列表
如果在in
中使用值是单个字符的变量插值,需要用[]
包括, 不然会把字符展开成字母数组:
全局常量可以直接用!!
访问, 如pi
!!
不是必须的, 也可以用Main.pi
来替代
Tidier_set(option::AbstractString, value::Bool)
设置Tidier包的配置项:
这个是@count()
低阶辅助宏, 平时应该用不太到;
@tally(df, [wt], [sort])
, 其中wt
表示权重列(计算该列总和, 而不是计数), sort::Bool表示是否对计数排序
@count(df, exprs..., [wt], [sort=true/false])
将输入向量n等分, 如果不是n的倍数, 则bin大小最多差1个,大bin在前
可以理解为一个粗略的排名函数, 但是会忽略平局的情况
@drop_na(df, [cols...])
不带参数调用, 删除任何具有缺失的行
指定列作为参数, 则只删除指定列中有缺失的行
@glimpse(df, width = 80)
预览表格, 根据width设置输出宽度(字符数)
@pull(df, col)
提取一列作为向量
TBC...